#ifndef LOGINCHECKINCOMMAND_H
#define LOGINCHECKINCOMMAND_H

#include "base_command.h"
#include <QString>
#include <QNetworkReply>
#include <QJsonObject>
#include <QStringList>

// LoginCheckinCommand 命令类
// 负责处理登录检查
class LoginCheckinCommand : public BaseCommand
{
    Q_OBJECT

public:
    explicit LoginCheckinCommand(QObject *parent = nullptr);
    ~LoginCheckinCommand();
    
    // 设置 QNetworkAccessManager 实例（重写基类方法以连接信号）
    void setNetworkAccessManager(QNetworkAccessManager *networkManager);
    
    // 执行命令
    // 参数：username - 用户名，password - 密码，checkcode - 验证码
    // 返回：是否成功发起请求（异步操作，实际结果通过信号通知）
    bool execute(const QString &username, const QString &password, const QString &checkcode = "");

signals:
    // 登录结果信号
    void loginResult(int resultCode, const QString &message, const QStringList &domains);
    
    // 用户工作目录创建完成信号
    void userWorkDirectoryCreated(const QString &username, const QString &workDirectory);

private slots:
    // 处理登录响应
    void handleLoginResponse(QNetworkReply *reply);

private:
    // 解析登录响应
    void parseLoginResponse(const QJsonObject &response, const QString &username);
    
    // 构建请求 URL
    QString buildRequestUrl(const QString &baseUrl);
    
    // 保存当前用户名（用于后续处理）
    QString m_currentUsername;
};

#endif // LOGINCHECKINCOMMAND_H

